/* Copyright 2018 JDCLOUD.COM

Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at

http:#www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.

JDCloud Redis API
京东云缓存Redis相关接口

OpenAPI spec version: v1
Contact: 

NOTE: This class is auto generated by the jdcloud code generator program.
*/


#ifndef RedisClient_h
#define RedisClient_h


#import <JDCloudOCSDKCore/JDCloudOCSDKCore.h>
#import <JDCloudOCSDKRedis/RedisApiModel.h>

@interface RedisClient : NSObject<JDCloudClient>{
    @private
    NSString* _userAgent;
    NSString* _serviceName;
    NSString* _version;
    }

    @property (strong,readonly,nonatomic) NSString* userAgent;

    @property (strong,readonly,nonatomic) NSString* serviceName;

    @property (strong,readonly,nonatomic) NSString* version;

    @property (strong,nonatomic) NSString* contentType;

    @property (strong,nonatomic) Credential* credential;

    @property (strong,nonatomic) SDKEnvironment* sdkEnvironment;

    @property (strong,nonatomic) NSMutableDictionary* customHeader;

    @property  (strong,nonatomic) NSString* httpRequestProtocol;

    -(void) addCustomerHeaderWithKey:(NSString*) key
    value:(NSString*) value;

    -(id)initWithGlobalConfig;

    -(id)initWithCredential:(Credential*)credential
    sdkEnvironment:(SDKEnvironment*)sdkEnvironment;
    -(id)initWithCredential:(Credential*)credential;
    /**
    modifyBackupPolicy sync request
    @param modifyBackupPolicyRequest request param
    @return key `statusCode` http request status code type is int
            `dataResult` the http request response data  type is NSData
            `requestError` the request error type is NSError
            `modifyBackupPolicyResponse` the request response data model
    */
    -(NSDictionary*) modifyBackupPolicySyncWithRequest:(RedisModifyBackupPolicyRequest*) modifyBackupPolicyRequest;

    -(void)modifyBackupPolicyAsyncWithRequest:(RedisModifyBackupPolicyRequest*) modifyBackupPolicyRequest
    completionHandler:(void(^)(int statusCode,RedisModifyBackupPolicyResponse* _Nullable modifyBackupPolicyResponse, NSData* _Nullable responseData,NSError * _Nullable error))completionHandler;
    /**
    modifyCacheInstanceClass sync request
    @param modifyCacheInstanceClassRequest request param
    @return key `statusCode` http request status code type is int
            `dataResult` the http request response data  type is NSData
            `requestError` the request error type is NSError
            `modifyCacheInstanceClassResponse` the request response data model
    */
    -(NSDictionary*) modifyCacheInstanceClassSyncWithRequest:(RedisModifyCacheInstanceClassRequest*) modifyCacheInstanceClassRequest;

    -(void)modifyCacheInstanceClassAsyncWithRequest:(RedisModifyCacheInstanceClassRequest*) modifyCacheInstanceClassRequest
    completionHandler:(void(^)(int statusCode,RedisModifyCacheInstanceClassResponse* _Nullable modifyCacheInstanceClassResponse, NSData* _Nullable responseData,NSError * _Nullable error))completionHandler;
    /**
    createBackup sync request
    @param createBackupRequest request param
    @return key `statusCode` http request status code type is int
            `dataResult` the http request response data  type is NSData
            `requestError` the request error type is NSError
            `createBackupResponse` the request response data model
    */
    -(NSDictionary*) createBackupSyncWithRequest:(RedisCreateBackupRequest*) createBackupRequest;

    -(void)createBackupAsyncWithRequest:(RedisCreateBackupRequest*) createBackupRequest
    completionHandler:(void(^)(int statusCode,RedisCreateBackupResponse* _Nullable createBackupResponse, NSData* _Nullable responseData,NSError * _Nullable error))completionHandler;
    /**
    describeInstanceConfig sync request
    @param describeInstanceConfigRequest request param
    @return key `statusCode` http request status code type is int
            `dataResult` the http request response data  type is NSData
            `requestError` the request error type is NSError
            `describeInstanceConfigResponse` the request response data model
    */
    -(NSDictionary*) describeInstanceConfigSyncWithRequest:(RedisDescribeInstanceConfigRequest*) describeInstanceConfigRequest;

    -(void)describeInstanceConfigAsyncWithRequest:(RedisDescribeInstanceConfigRequest*) describeInstanceConfigRequest
    completionHandler:(void(^)(int statusCode,RedisDescribeInstanceConfigResponse* _Nullable describeInstanceConfigResponse, NSData* _Nullable responseData,NSError * _Nullable error))completionHandler;
    /**
    describeBackupPolicy sync request
    @param describeBackupPolicyRequest request param
    @return key `statusCode` http request status code type is int
            `dataResult` the http request response data  type is NSData
            `requestError` the request error type is NSError
            `describeBackupPolicyResponse` the request response data model
    */
    -(NSDictionary*) describeBackupPolicySyncWithRequest:(RedisDescribeBackupPolicyRequest*) describeBackupPolicyRequest;

    -(void)describeBackupPolicyAsyncWithRequest:(RedisDescribeBackupPolicyRequest*) describeBackupPolicyRequest
    completionHandler:(void(^)(int statusCode,RedisDescribeBackupPolicyResponse* _Nullable describeBackupPolicyResponse, NSData* _Nullable responseData,NSError * _Nullable error))completionHandler;
    /**
    deleteCacheInstance sync request
    @param deleteCacheInstanceRequest request param
    @return key `statusCode` http request status code type is int
            `dataResult` the http request response data  type is NSData
            `requestError` the request error type is NSError
            `deleteCacheInstanceResponse` the request response data model
    */
    -(NSDictionary*) deleteCacheInstanceSyncWithRequest:(RedisDeleteCacheInstanceRequest*) deleteCacheInstanceRequest;

    -(void)deleteCacheInstanceAsyncWithRequest:(RedisDeleteCacheInstanceRequest*) deleteCacheInstanceRequest
    completionHandler:(void(^)(int statusCode,RedisDeleteCacheInstanceResponse* _Nullable deleteCacheInstanceResponse, NSData* _Nullable responseData,NSError * _Nullable error))completionHandler;
    /**
    resetCacheInstancePassword sync request
    @param resetCacheInstancePasswordRequest request param
    @return key `statusCode` http request status code type is int
            `dataResult` the http request response data  type is NSData
            `requestError` the request error type is NSError
            `resetCacheInstancePasswordResponse` the request response data model
    */
    -(NSDictionary*) resetCacheInstancePasswordSyncWithRequest:(RedisResetCacheInstancePasswordRequest*) resetCacheInstancePasswordRequest;

    -(void)resetCacheInstancePasswordAsyncWithRequest:(RedisResetCacheInstancePasswordRequest*) resetCacheInstancePasswordRequest
    completionHandler:(void(^)(int statusCode,RedisResetCacheInstancePasswordResponse* _Nullable resetCacheInstancePasswordResponse, NSData* _Nullable responseData,NSError * _Nullable error))completionHandler;
    /**
    describeSlowLog sync request
    @param describeSlowLogRequest request param
    @return key `statusCode` http request status code type is int
            `dataResult` the http request response data  type is NSData
            `requestError` the request error type is NSError
            `describeSlowLogResponse` the request response data model
    */
    -(NSDictionary*) describeSlowLogSyncWithRequest:(RedisDescribeSlowLogRequest*) describeSlowLogRequest;

    -(void)describeSlowLogAsyncWithRequest:(RedisDescribeSlowLogRequest*) describeSlowLogRequest
    completionHandler:(void(^)(int statusCode,RedisDescribeSlowLogResponse* _Nullable describeSlowLogResponse, NSData* _Nullable responseData,NSError * _Nullable error))completionHandler;
    /**
    createCacheInstance sync request
    @param createCacheInstanceRequest request param
    @return key `statusCode` http request status code type is int
            `dataResult` the http request response data  type is NSData
            `requestError` the request error type is NSError
            `createCacheInstanceResponse` the request response data model
    */
    -(NSDictionary*) createCacheInstanceSyncWithRequest:(RedisCreateCacheInstanceRequest*) createCacheInstanceRequest;

    -(void)createCacheInstanceAsyncWithRequest:(RedisCreateCacheInstanceRequest*) createCacheInstanceRequest
    completionHandler:(void(^)(int statusCode,RedisCreateCacheInstanceResponse* _Nullable createCacheInstanceResponse, NSData* _Nullable responseData,NSError * _Nullable error))completionHandler;
    /**
    restoreInstance sync request
    @param restoreInstanceRequest request param
    @return key `statusCode` http request status code type is int
            `dataResult` the http request response data  type is NSData
            `requestError` the request error type is NSError
            `restoreInstanceResponse` the request response data model
    */
    -(NSDictionary*) restoreInstanceSyncWithRequest:(RedisRestoreInstanceRequest*) restoreInstanceRequest;

    -(void)restoreInstanceAsyncWithRequest:(RedisRestoreInstanceRequest*) restoreInstanceRequest
    completionHandler:(void(^)(int statusCode,RedisRestoreInstanceResponse* _Nullable restoreInstanceResponse, NSData* _Nullable responseData,NSError * _Nullable error))completionHandler;
    /**
    describeUserQuota sync request
    @param describeUserQuotaRequest request param
    @return key `statusCode` http request status code type is int
            `dataResult` the http request response data  type is NSData
            `requestError` the request error type is NSError
            `describeUserQuotaResponse` the request response data model
    */
    -(NSDictionary*) describeUserQuotaSyncWithRequest:(RedisDescribeUserQuotaRequest*) describeUserQuotaRequest;

    -(void)describeUserQuotaAsyncWithRequest:(RedisDescribeUserQuotaRequest*) describeUserQuotaRequest
    completionHandler:(void(^)(int statusCode,RedisDescribeUserQuotaResponse* _Nullable describeUserQuotaResponse, NSData* _Nullable responseData,NSError * _Nullable error))completionHandler;
    /**
    describeDownloadUrl sync request
    @param describeDownloadUrlRequest request param
    @return key `statusCode` http request status code type is int
            `dataResult` the http request response data  type is NSData
            `requestError` the request error type is NSError
            `describeDownloadUrlResponse` the request response data model
    */
    -(NSDictionary*) describeDownloadUrlSyncWithRequest:(RedisDescribeDownloadUrlRequest*) describeDownloadUrlRequest;

    -(void)describeDownloadUrlAsyncWithRequest:(RedisDescribeDownloadUrlRequest*) describeDownloadUrlRequest
    completionHandler:(void(^)(int statusCode,RedisDescribeDownloadUrlResponse* _Nullable describeDownloadUrlResponse, NSData* _Nullable responseData,NSError * _Nullable error))completionHandler;
    /**
    describeCacheInstances sync request
    @param describeCacheInstancesRequest request param
    @return key `statusCode` http request status code type is int
            `dataResult` the http request response data  type is NSData
            `requestError` the request error type is NSError
            `describeCacheInstancesResponse` the request response data model
    */
    -(NSDictionary*) describeCacheInstancesSyncWithRequest:(RedisDescribeCacheInstancesRequest*) describeCacheInstancesRequest;

    -(void)describeCacheInstancesAsyncWithRequest:(RedisDescribeCacheInstancesRequest*) describeCacheInstancesRequest
    completionHandler:(void(^)(int statusCode,RedisDescribeCacheInstancesResponse* _Nullable describeCacheInstancesResponse, NSData* _Nullable responseData,NSError * _Nullable error))completionHandler;
    /**
    describeClusterInfo sync request
    @param describeClusterInfoRequest request param
    @return key `statusCode` http request status code type is int
            `dataResult` the http request response data  type is NSData
            `requestError` the request error type is NSError
            `describeClusterInfoResponse` the request response data model
    */
    -(NSDictionary*) describeClusterInfoSyncWithRequest:(RedisDescribeClusterInfoRequest*) describeClusterInfoRequest;

    -(void)describeClusterInfoAsyncWithRequest:(RedisDescribeClusterInfoRequest*) describeClusterInfoRequest
    completionHandler:(void(^)(int statusCode,RedisDescribeClusterInfoResponse* _Nullable describeClusterInfoResponse, NSData* _Nullable responseData,NSError * _Nullable error))completionHandler;
    /**
    modifyCacheInstanceAttribute sync request
    @param modifyCacheInstanceAttributeRequest request param
    @return key `statusCode` http request status code type is int
            `dataResult` the http request response data  type is NSData
            `requestError` the request error type is NSError
            `modifyCacheInstanceAttributeResponse` the request response data model
    */
    -(NSDictionary*) modifyCacheInstanceAttributeSyncWithRequest:(RedisModifyCacheInstanceAttributeRequest*) modifyCacheInstanceAttributeRequest;

    -(void)modifyCacheInstanceAttributeAsyncWithRequest:(RedisModifyCacheInstanceAttributeRequest*) modifyCacheInstanceAttributeRequest
    completionHandler:(void(^)(int statusCode,RedisModifyCacheInstanceAttributeResponse* _Nullable modifyCacheInstanceAttributeResponse, NSData* _Nullable responseData,NSError * _Nullable error))completionHandler;
    /**
    describeBackups sync request
    @param describeBackupsRequest request param
    @return key `statusCode` http request status code type is int
            `dataResult` the http request response data  type is NSData
            `requestError` the request error type is NSError
            `describeBackupsResponse` the request response data model
    */
    -(NSDictionary*) describeBackupsSyncWithRequest:(RedisDescribeBackupsRequest*) describeBackupsRequest;

    -(void)describeBackupsAsyncWithRequest:(RedisDescribeBackupsRequest*) describeBackupsRequest
    completionHandler:(void(^)(int statusCode,RedisDescribeBackupsResponse* _Nullable describeBackupsResponse, NSData* _Nullable responseData,NSError * _Nullable error))completionHandler;
    /**
    describeCacheInstance sync request
    @param describeCacheInstanceRequest request param
    @return key `statusCode` http request status code type is int
            `dataResult` the http request response data  type is NSData
            `requestError` the request error type is NSError
            `describeCacheInstanceResponse` the request response data model
    */
    -(NSDictionary*) describeCacheInstanceSyncWithRequest:(RedisDescribeCacheInstanceRequest*) describeCacheInstanceRequest;

    -(void)describeCacheInstanceAsyncWithRequest:(RedisDescribeCacheInstanceRequest*) describeCacheInstanceRequest
    completionHandler:(void(^)(int statusCode,RedisDescribeCacheInstanceResponse* _Nullable describeCacheInstanceResponse, NSData* _Nullable responseData,NSError * _Nullable error))completionHandler;
    /**
    modifyInstanceConfig sync request
    @param modifyInstanceConfigRequest request param
    @return key `statusCode` http request status code type is int
            `dataResult` the http request response data  type is NSData
            `requestError` the request error type is NSError
            `modifyInstanceConfigResponse` the request response data model
    */
    -(NSDictionary*) modifyInstanceConfigSyncWithRequest:(RedisModifyInstanceConfigRequest*) modifyInstanceConfigRequest;

    -(void)modifyInstanceConfigAsyncWithRequest:(RedisModifyInstanceConfigRequest*) modifyInstanceConfigRequest
    completionHandler:(void(^)(int statusCode,RedisModifyInstanceConfigResponse* _Nullable modifyInstanceConfigResponse, NSData* _Nullable responseData,NSError * _Nullable error))completionHandler;
    /**
    describeInstanceClass sync request
    @param describeInstanceClassRequest request param
    @return key `statusCode` http request status code type is int
            `dataResult` the http request response data  type is NSData
            `requestError` the request error type is NSError
            `describeInstanceClassResponse` the request response data model
    */
    -(NSDictionary*) describeInstanceClassSyncWithRequest:(RedisDescribeInstanceClassRequest*) describeInstanceClassRequest;

    -(void)describeInstanceClassAsyncWithRequest:(RedisDescribeInstanceClassRequest*) describeInstanceClassRequest
    completionHandler:(void(^)(int statusCode,RedisDescribeInstanceClassResponse* _Nullable describeInstanceClassResponse, NSData* _Nullable responseData,NSError * _Nullable error))completionHandler;

    /**
    redis common sync request
    @param  jdcloudDataRequest request param
    @return key `statusCode` http request status code type is int
            `dataResult` the http request response data  type is NSData
            `requestError` the request error type is NSError
    */
    -(NSDictionary*) redisCommonSyncWithRequest:(JDCloudDataRequest*) jdcloudDataRequest
                                           url:(NSString*) url
                                        method:(NSString*) method;

    -(void)redisCommonAsyncWithRequest:(JDCloudDataRequest*) jdcloudDataRequest
                                  url:(NSString*) url
                               method:(NSString*) method
                    completionHandler:(void(^)(int statusCode, NSData* _Nullable responseData,NSError * _Nullable error))completionHandler;

    @end


    #endif /* RedisClient_h */
